package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.entity.RuleConfig;

import java.util.List;

public interface IRuleConfigService {
    /**
     * 查询停车规则配置列表
     */
    List<RuleConfig> selectRuleConfigList(RuleConfig ruleConfig);

    /**
     * 根据ID查询规则配置
     */
    RuleConfig selectRuleConfigById(Long configId);

    /**
     * 新增规则配置
     */
    int insertRuleConfig(RuleConfig ruleConfig);

    /**
     * 修改规则配置
     */
    int updateRuleConfig(RuleConfig ruleConfig);

    /**
     * 批量删除规则配置
     */
//    int deleteRuleConfigByIds(Long[] configIds);

    /**
     * 校验规则名称唯一性
     */
    boolean checkRuleNameUnique(RuleConfig ruleConfig);

    /**
     * 数据权限校验（根据ID校验当前用户是否有权限操作）
     */
    void checkDataScope(Long configId);

    /**
     * 校验是否存在关联数据（如停车场使用该规则）
     */
//    boolean hasAssociatedData(Long[] configIds);

    /**
     * 查询所有可用的规则配置（未删除的）
     */
    List<RuleConfig> selectAllEnabledRules();

    /**
     * 检查规则是否被park_config表引用
     * @param ruleId 规则ID
     * @return true-已被引用，false-未被引用
     */
    boolean isRuleUsedByParkConfig(Long ruleId);

    /**
     * 根据ID删除停车规则配置
     * @param id 规则ID
     * @return 影响行数
     */
    int deleteRuleConfigById(Long id);
}
